Skip to main content

2.8 Aggregering og kobling av datasett

Datasett bygges vanligvis opp gjennom kommandoen import, der en legger til én og én variabel målt ved gitte tidspunkter. Variablene må da ha samme enhetstype, vanligvis person gitt ved nøkkelidentifikatoren PERSONID_1. Sammenkoblingen gjøres automatisk av analysesystemet, og en trenger bare å forholde seg til import-kommandoen der en spesifiserer variabelnavn, uttrekksdato og eventuelt alias.

Analysesystemet gjør det imidlertid mulig å analysere data med andre enhetstyper. Det kan være på hendelsesnivå, kommunenivå, familienivå, kursnivå, jobbnivå etc. Slike data med andre enhetstyper enn person kan ikke uten videre importeres rett inn i et persondatasett (datasett med enhetstypen person gitt ved PERSONID_1). De må først bearbeides til passende enhetsnivå gitt ved variabelen en ønsker å bruke som koblingsnøkkel i måldatasettet, og deretter kobles på datasettet ved bruk av kommandoen merge.

Data på et lavere enhetsnivå enn person, f.eks. hendelses- eller kursnivå1, må aggregeres til personnivå ved bruk av kommandoen collapse() før du kobler det på et persondatasett ved bruk av merge. Kommandoen collapse() gjør to ting:

  • Aggregerer data opp til et høyere enhetsnivå gitt ved en identifikatorvariabel. I prinsippet kan alle kategoriske variabler brukes som identifikatorvariabler, f.eks. ved å bruke bostedskommune som identifikator kan en aggregere data opp til kommunenivå

  • Foretar en oppsummerende kalkulering på tvers av enhetene, for hver av de nye aggregerte enhetene. Målemetode angis i parentes etter kommandoen. Følgende alternativer er tilgjengelige:

    • mean (snitt)

    • median (median)

    • min (minimum)

    • max (maksimum)

    • count (antall observasjoner)

    • sum (sum)

    • semean (standardfeil av gjennomsnitt)

    • sebinomial (binominal standardfeil av gjennomsnitt)

    • sd (standardavvik)

    • percent (prosentandel gyldige verdier)

    • iqr (interkvartilbredde)

    • gini (ginikoeffisient)

Data på samme eller høyere enhetsnivå enn person, f.eks. kommune- eller familienivå, kan imidlertid kobles på et persondatasett ved bruk av aktuell variabel på samme nivå i måldatasettet (brukes som koblingsnøkkel).

Eksempel der en aggregerer kursdata (data om pågående utdanning) opp fra kursnivå til personnivå og kobler på et persondatasett:

 collapse(max) utdanningsnivå, by(fnr)
rename utdanningsnivå høyeste_utdanningsnivå
merge høyeste_utdanningsnivå into persondatasett
 

Eksempel der en aggregerer opp fra personnivå til familienivå (summerer familiemedlemmers inntekter og lager familieinntekt) og kobler familiedataene på et persondatasett:

 collapse(sum) inntekt, by(familienummer)
rename inntekt familieinntekt
merge familieinntekt into persondatasett on familienummer
 

Merk at det i eksempelet over spesifiseres koblingsvariabel gjennom uttrykket on familienummer. Dette må alltid gjøres dersom en bruker andre koblingsvariabler enn hovedidentifikatoren i måldatasettet.

Tips! Det er også mulig å endre navn på de aggregerte variablene inni selve collapse()-uttrykket. Eksempelet over kan dermed forenkles slik:

 collapse(sum) inntekt -> familieinntekt, by(familienummer)
merge familieinntekt into persondatasett on familienummer
 

Det er mulig å aggregere over flere variabler i samme operasjon, og du kan bruke forskjellige måletyper for hver enkelt variabel. Det er også mulig å bruke flere måletyper for en enkelt variabel. Om du kun oppgir èn måletype, brukes denne på alle variablene. Om du vil ha forskjellige for hver variabel, angir du måletype i parentes foran hver av variablene.

Eksempel: Teller antall kurs og finner kurs med høyeste utdanningskode for hvert individ. Kobler deretter på et persondatasett:

 create-dataset kursdata
import db/NUDB_KURS_NUS 2020-11-01 as kurstype
import db/NUDB_KURS_FNR as fnr
destring kurstype
collapse (count) kurstype -> ant_kurs (max) kurstype -> høyeste_nivå, by(fnr)
merge ant_kurs høyeste_nivå into bosatte
 

Eksempel: Teller antall kurs, og finner kurs med høyeste utdanningskode samt kurs som startet først, for hvert individ. Kobler deretter på et persondatasett. Variabelen START@kurstype brukes til å finne kurset som startet først. Dette er en tilleggsopplysning som bare er tilgjengelig dersom du bruker kommandoen import-event:

 //Henter personer som tar høyere utdanning i løpet av 2020
create-dataset kursdata
import-event db/NUDB_KURS_NUS 2020-01-01 to 2020-12-31 as kurstype
destring kurstype
keep if kurstype >= 700000 & kurstype < 900000

//Kobler på lenke mellom kurs-id og fødselsnumre
create-dataset lenke_kurs_person
import db/NUDB_KURS_FNR as fnr
merge fnr into kursdata

//Lager statistikk (collapser) over antall hendelser med høy utdanning per individ, høyeste utdanningsnivå og første kurs, og kobler dette på persondatasettet
use kursdata
collapse (count) kurstype -> ant_kurs (max) kurstype -> høyeste_nivå (min) START@kurstype -> første_kurs, by(fnr)
merge ant_kurs høyeste_nivå første_kurs into bosatte
 

Klikk på lenkene under for eksempler på hvordan koble på opplysninger om hhv. foreldre, familier og kurs. Sistnevnte illustrerer sammenkoblinger av data på lavere nivå enn person (kursdata er opplysninger om pågående utdanning gitt ved aktuelt kurs/fag som tas på et gitt tidspunkt, der personer kan ta flere kurs samtidig). Data om foreldre og familier illustrerer sammenkoblinger av data på høyere nivå enn person.

Bruk kommandoen help collapse i analyseverktøyet for mer informasjon om hva man kan bruke collapse til.

\rhd [Eksempel: Hvordan benytte foreldreopplysninger i analyser](docs\eksempel\Tema - Familieanalyser\Hvordan bruke foreldreopplysninger i analyser.md)

\rhd [Eksempel: Aggregere data til familienivå](docs\eksempel\Tema - Familieanalyser\Aggregere data til familienivå.md)

\rhd [Eksempel: Hente ut informasjon om pågående utdanning i løpet av et år (kurs)](docs\eksempel\Tema - Utdanningsanalyser\Hente ut informasjon om pågående utdanning i løpet av et år.md)

\rhd [Eksempel: Hente ut informasjon om pågående utdanning (kurs) for et gitt tidspunkt](docs\eksempel\Tema - Utdanningsanalyser\Hente ut informasjon om pågående utdanning for et gitt tidspunkt.md)

Footnotes

  1. Kursdata er litt annerledes enn øvrige persondata ettersom disse dataene selv etter uttrekk på et gitt tidspunkt innholder persondata med flere observasjoner per individ. Dette reflekterer det faktum at det er mulig å delta på flere ulike kurs/studier på samme tid. Samme prinsipp gjelder for jobbdata der det er mulig å ha flere jobber på samme tid.